let BaseController = require('./BaseController')
let fs = require('fs')
let path = require('path')
let cheerio = require('cheerio')
class Controller extends BaseController {
    constructor() {
        super();
        this.baseSrc = `d:/数据指标分类/${new Date().format('yyyyMMdd')}/待入库/08财报/财务诊断明细数据/`
        this.encode = 'GBK'
        this.data = [];
        this.pageIndex = 0;
        this.params = []
        this.resultArr = [];
    }
    /**
     * 获取url
     */
    getUrl(data) {
        return `http://basic.10jqka.com.cn/${this.params[this.pageIndex]}/finance.html#stockpage`
    }

    /**
     * 获取历史数据
     */
    async getHistory() {
        console.log('28财报_财务诊断明细数据Controller')
        if (this.pageIndex >= this.params.length) return false;
        console.log(this.pageIndex)
        let data = await this.getData('', this.isCache)
        data = this.axiosDataFormat(data.toString());
        if (data['财务报告季度'] != 'NaNaN') {
            this.resultArr.push(data);
        }
        this.pageIndex++
        await this.getHistory()
    }

    /**
     * 数据格式化
     */
    axiosDataFormat(data) {
        let $ = cheerio.load(data, { decodeEntities: true });
        let 财务状况是否明显改善 = $('#financediagn').find('.courier_box').find('.courier_left').find('.upcolor').text();
        let 财务状况描述 = $('#financediagn').find('.courier_box').find('.courier_left').find('p').text().replace('[查看具体诊断]', '');
        let 财务报告季度 = $('#financediagn').find('.bd.clearfix div').eq(0).text().replace('报告期：', '')
        if (财务报告季度.indexOf('一季报') > -1) {
            财务报告季度 = 财务报告季度.replace('一季报', '01').replace('年', '-');
        } else if (财务报告季度.indexOf('二季报') > -1) {
            财务报告季度 = 财务报告季度.replace('二季报', '04').replace('年', '-');
        } else if (财务报告季度.indexOf('三季报') > -1) {
            财务报告季度 = 财务报告季度.replace('三季报', '07').replace('年', '-');
        } else if (财务报告季度.indexOf('四季报') > -1) {
            财务报告季度 = 财务报告季度.replace('四季报', '10').replace('年', '-');
        }
        财务报告季度 = new Date(财务报告季度).format('yyyyMM')
        let 财务报告内容 = []
        $('#financediagn').find('.courier_right').find('p').map((i, item) => {
            let type = 0;
            if ($(item).find('.icon-rise').length) {
                type = 1
            } else if ($(item).find('.icon-fall').length) {
                type = -1
            }
            财务报告内容.push(`${type}:${$(item).text().replace(/\n/g, '').trim()}`);
        })
        财务报告内容 = 财务报告内容.join('||');
        if (财务报告内容) {
            var a = 1
        }
        let 雷达图数据 = $('#chartData').attr('value') ? JSON.stringify(JSON.parse($('#chartData').attr('value'))) : '';
        let 股票Id = this.params[this.pageIndex]
        return { 股票Id, 财务报告季度, 财务状况是否明显改善, 财务状况描述, 财务报告内容, 雷达图数据 }
    }

    getParams() {
        let content = fs.readFileSync(`d:/数据指标分类/${new Date().format('yyyyMMdd')}/待入库/09字典/沪深股票列表/沪深股票列表_${new Date().format('yyyyMMdd')}.csv`)
        content.toString().split(/\n/).map(line => {
            if (line) {
                this.params.push(line.split(',')[1])
            }
        })
    }
    /**
     * 写csv
     */
    writeCsv(arr) {
        if (!fs.existsSync(this.baseSrc)) {
            this.mkdirs(this.baseSrc)
        }
        this.file = `财务诊断_${new Date().format('yyyyMMdd')}.csv`
        fs.writeFileSync(path.join(this.baseSrc, this.file), this.convertToCSV(arr, 'title'), 'UTF-8')
    }

    async main(startDate = '2015-01-01', isCache = true) {
        this.isCache = isCache;
        console.log('--->28财报_财务诊断明细数据Controller')
        controller.getParams()
        await this.getHistory()
        this.writeCsv(this.resultArr);
    }
}

let controller = new Controller()
module.exports = controller

